package com.ruslan.magaz.repository;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import com.ruslan.magaz.domain.Order;
import com.ruslan.magaz.domain.OrderStatus;
import com.ruslan.magaz.domain.OrderStatusName;
import com.ruslan.magaz.domain.OrderedItem;
import com.ruslan.magaz.domain.User;

public interface OrderDao {
	OrderStatusName getOrderStatusNameById(int id);
	void addOrder(int userId, Order order);
	void removeOrder(Order order);
	void editOrder(Order order);
	Order getOrderById(int id);
	List<Order> getAllOrdersForUser(int userId, int pageNum, int pageSize);
	List<OrderStatusName> getAllOrderStatusNames();
	void addOrderedItem(int orderId, OrderedItem orderedItem);
	void removeOrderedItem(OrderedItem orderItem);
	void editOrderedItem(OrderedItem orderItemId);
	OrderedItem getOrderedItemById(int id);
//	List<OrderedItem> getAllOrderedItemsForOrder(int orderId);
	void addOrderStatus(int orderId, OrderStatus orderStatus);
	void removeOrderStatus(OrderStatus orderStatus);
	void editOrderStatus(OrderStatus orderStatus);
	OrderStatus getOrderStatusById(int id);
	List<OrderStatus> getOrderStatusesForOrder(int orderId);
	List getOrderLines(int userId, int pageNum, int pageSize);
	int ordersForUserPageCount(int userId, int pageSize);
	List<OrderedItem> getOrderedItemsForOrder(int orderId, int pageNum, int pageSize);
	int orderedItemsForOrderPageCount(int orderId, int pageSize);
	User getUsersforOrder(int orderId);
}
